home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 41.zip / BS1 part 41 / Devpac 2.12 disk 2.adf / include.strip / exec / lists.i < prev    next >
Text File  |  1987-03-31  |  2KB  |  108 lines

  1.     IFND EXEC_LISTS_I
  2. EXEC_LISTS_I SET 1
  3.     IFND EXEC_NODES_I
  4.     INCLUDE "exec/nodes.i"
  5.     ENDC !EXEC_NODES_I
  6.  STRUCTURE  LH,0
  7.     APTR    LH_HEAD
  8.     APTR    LH_TAIL
  9.     APTR    LH_TAILPRED
  10.     UBYTE   LH_TYPE
  11.     UBYTE   LH_pad
  12.     LABEL   LH_SIZE
  13.  STRUCTURE  MLH,0
  14.     APTR    MLH_HEAD
  15.     APTR    MLH_TAIL
  16.     APTR    MLH_TAILPRED
  17.     LABEL   MLH_SIZE
  18. NEWLIST     MACRO   *
  19.      MOVE.L  \1,(\1)
  20.      ADDQ.L  #LH_TAIL,(\1)
  21.      CLR.L   LH_TAIL(\1)
  22.      MOVE.L  \1,(LH_TAIL+LN_PRED)(\1)
  23.      ENDM
  24. TSTLIST     MACRO   *
  25.      IFC     '\1',''
  26.      CMP.L   LH_TAIL+LN_PRED(A0),A0
  27.      ENDC
  28.      IFNC    '\1',''
  29.      CMP.L   LH_TAIL+LN_PRED(\1),\1
  30.      ENDC
  31.      ENDM
  32. SUCC        MACRO   *
  33.      MOVE.L  (\1),\2
  34.      ENDM
  35. PRED        MACRO   *
  36.      MOVE.L  LN_PRED(\1),\2
  37.      ENDM
  38. IFEMPTY     MACRO   *
  39.      CMP.L   LH_TAIL+LN_PRED(\1),\1
  40.      BEQ     \2
  41.      ENDM
  42. IFNOTEMPTY  MACRO   *
  43.      CMP.L   LH_TAIL+LN_PRED(\1),\1
  44.      BNE     \2
  45.      ENDM
  46. TSTNODE     MACRO   *
  47.      MOVE.L  (\1),\2
  48.      TST.L   (\2)
  49.      ENDM
  50. NEXTNODE    MACRO   *
  51.      MOVE.L  \1,\2
  52.      MOVE.L  (\2),\1
  53.      IFC     '\0',''
  54.      BEQ     \3
  55.      ENDC
  56.      IFNC    '\0',''
  57.      BEQ.S   \3
  58.      ENDC
  59.      ENDM
  60. ADDHEAD     MACRO
  61.      MOVE.L  (A0),D0
  62.      MOVE.L  A1,(A0)
  63.      MOVEM.L D0/A0,(A1)
  64.      MOVE.L  D0,A0
  65.      MOVE.L  A1,LN_PRED(A0)
  66.      ENDM
  67. ADDTAIL     MACRO
  68.      LEA     LH_TAIL(A0),A0
  69.      MOVE.L  LN_PRED(A0),D0
  70.      MOVE.L  A1,LN_PRED(A0)
  71.      MOVE.L  A0,(A1)
  72.      MOVE.L  D0,LN_PRED(A1)
  73.      MOVE.L  D0,A0
  74.      MOVE.L  A1,(A0)
  75.      ENDM
  76. REMOVE      MACRO
  77.      MOVE.L  (A1),A0
  78.      MOVE.L  LN_PRED(A1),A1
  79.      MOVE.L  A0,(A1)
  80.      MOVE.L  A1,LN_PRED(A0)
  81.      ENDM
  82. REMHEAD     MACRO
  83.      MOVE.L  (A0),A1
  84.      MOVE.L  (A1),D0
  85.      BEQ.S   REMHEAD\@
  86.      MOVE.L  D0,(A0)
  87.      EXG.L   D0,A1
  88.      MOVE.L  A0,LN_PRED(A1)
  89. REMHEAD\@
  90.      ENDM
  91. REMHEADQ    MACRO   *
  92.      MOVE.L  (\1),\2
  93.      MOVE.L  (\2),\3
  94.      MOVE.L  \3,(\1)
  95.      MOVE.L  \1,LN_PRED(\3)
  96.      ENDM
  97. REMTAIL     MACRO
  98.      MOVE.L  LH_TAIL+LN_PRED(A0),A1
  99.      MOVE.L  LN_PRED(A1),D0
  100.      BEQ.S   REMTAIL\@
  101.      MOVE.L  D0,LH_TAIL+LN_PRED(A0)
  102.      EXG.L   D0,A1
  103.      MOVE.L  A0,(A1)
  104.      ADDQ.L  #4,(A1)
  105. REMTAIL\@
  106.      ENDM
  107.     ENDC !EXEC_LISTS_I
  108.